﻿'*******************************************************************************************
'* Copyright Brügmann Software GmbH, Papenburg
'* Author: Björn Kremer
'* Contact: codeplex<at>patorg.de
'* 
'* VB.CMIS is a VB.NET implementation of the Content Management Interoperability Services (CMIS) standard
'*
'* This file is part of VB.CMIS.
'* 
'* VB.CMIS is free software: you can redistribute it and/or modify
'* it under the terms of the GNU Lesser General Public License as published by
'* the Free Software Foundation, either version 3 of the License, or
'* (at your option) any later version.
'* 
'* VB.CMIS is distributed in the hope that it will be useful,
'* but WITHOUT ANY WARRANTY; without even the implied warranty of
'* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
'* GNU Lesser General Public License for more details.
'* 
'* You should have received a copy of the GNU Lesser General Public License
'* along with VB.CMIS. If not, see <http://www.gnu.org/licenses/>.
'*******************************************************************************************
Imports System.Xml.Serialization
Imports System.Xml
<XmlRoot("query", Namespace:=CmisNamespaceConstants.Cmis)>
Public Class Query
   Implements IXmlSerializable
   Public Property Statement As String
   Public Property SearchAllVersions As Boolean
   Public Property IncludeAllowableActions As Boolean
   Public Property IncludeRelationships As Enums.IncludeRelationships
   Public Property RenditionFilter As String
   Public Property MaxItems As Integer
   Public Property SkipCount As Integer

   Public Function GetSchema() As System.Xml.Schema.XmlSchema Implements System.Xml.Serialization.IXmlSerializable.GetSchema
      Return Nothing
   End Function

   Public Sub ReadXml(reader As System.Xml.XmlReader) Implements System.Xml.Serialization.IXmlSerializable.ReadXml
      Dim doc As New XmlDocument()
      doc.Load(reader)

      Dim node As XmlNode = Common.GetItemCaseInsensitiveFromXML(doc, "query")
      For Each child As XmlNode In node.ChildNodes
         Dim lName As String = Common.GetNodeNameWithoutPrefix(child).ToLowerInvariant
         If lName.Equals("statement") Then
            statement = child.InnerText
         ElseIf lName.Equals("searchallversions") Then
            SearchAllVersions = Boolean.Parse(child.InnerText)
         ElseIf lName.Equals("includeallowableactions") Then
            IncludeAllowableActions = Boolean.Parse(child.InnerText)
         ElseIf lName.Equals("includerelationships") Then
            IncludeRelationships = Common.GetValueByDataMemberValue(Of Enums.IncludeRelationships)(child.InnerText)
         ElseIf lName.Equals("renditionfilter") Then
            RenditionFilter = child.InnerText
         ElseIf lName.Equals("maxitems") Then
            MaxItems = Integer.Parse(child.InnerText)
         ElseIf lName.Equals("skipcount") Then
            SkipCount = Integer.Parse(child.InnerText)
         End If
      Next
   End Sub

   Public Sub WriteXml(writer As System.Xml.XmlWriter) Implements System.Xml.Serialization.IXmlSerializable.WriteXml

   End Sub
End Class
